GetAxisByIndex
從軸取得資訊。
Syntax
KsError GetAxisByIndex(
int Index,
SlaveStatus* Details,
int* Resolution,
DWORD* InputVariables,
DWORD* OutputVariables
);
參數
Index:軸的索引。索引以 0 為起始;別名將影響此參數。
Details:指示用以接收軸資訊的 SlaveStatus 結構。
Resolution:軸的編碼器解析度。解析度取決於 ESI 資料庫中的 Resolution object。若 Resolution object 被選取,則解析度來自於儲存於物件中的值;若 Resolution object 未選取,則解析度將套用 ESI 資料庫中的 Default Resolution 設定值。
InputVariables:PDO 數據中可用的輸入變數。下表列出 InputVariables 的位元遮罩。
OutputVariables:PDO 數據中可用的輸出變數。下表列出 OutputVariables 的位元遮罩。
InputVariables 的位元遮罩
十六進制位元遮罩 | 變數 |
---|---|
0x1 | VAR_STATUS_WORD |
0x2 | VAR_ACTUAL_POSITION |
0x4 | VAR_SECOND_ENCODER |
0x8 | VAR_ACTUAL_VELOCITY |
0x10 | VAR_ACTUAL_TORQUE |
0x20 | VAR_TOUCH_PROBE_STATUS |
0x40 | VAR_MOP_DISPLAY |
0x80 | VAR_AXIS_INPUTS |
OutputVariables 的位元遮罩
十六進制位元遮罩 | 變數 |
---|---|
0x1 | VAR_CONTROL_WORD |
0x2 | VAR_TARGET_POSITION |
0x4 | VAR_TARGET_VELOCITY |
0x8 | VAR_TARGET_TORQUE |
0x10 | VAR_TORQUE_OFFSET |
0x20 | VAR_TOUCH_PROBE_CONTROL |
0x40 | VAR_MOP |
0x80 | VAR_AXIS_OUTPUTS |
回傳值
若此函式執行成功,會回傳 errNoError
,否則會傳回錯誤碼。如需更多有關錯誤碼的資訊,請參閱 KsError 清單。
備註
取得軸與其編碼器解析度明細。KINGSTAR 子系統啟動後使用。
可用的 EtherCAT 狀態
ecatOP
範例
複製
SlaveStatus slaveStatus = { 0 };
int resolution = 0;
DWORD InputVar = 0, OutputVar = 0;
nRet = GetAxisByIndex(0, &slaveStatus, &resolution, &InputVar, &OutputVar);
if (nRet == errNoError)
{
// Check the slave information in the SlaveStatus structure.
RtPrintf("Axis 0 %s: Vendor 0x%x, Product 0x%x, Revision 0x%x, Serial 0x%x\n",
slaveStatus.Name, slaveStatus.VendorId, slaveStatus.ProductCode,
slaveStatus.RevisionNumber, slaveStatus.SerialNumber);
RtPrintf("Address: Auto %d, Fixed %d, Alias %d\n",
slaveStatus.SlaveId, slaveStatus.PhysAddress, slaveStatus.AliasAddress);
RtPrintf("PDO: Input len %d, Output len %d, Index offset 0x%x\n",
slaveStatus.InputLength, slaveStatus.OutputLength, slaveStatus.VariableIndexOffset);
RtPrintf("State %d, Cycle time %d\n", slaveStatus.State, slaveStatus.CycleTime);
// Use defined bit mask to check if desired variables are in the PDO data.
if ((InputVar & VAR_MOP_DISPLAY) == VAR_MOP_DISPLAY) {
BYTE mopDisplay = 0;
nRet = ReadAxisMopDisplay(0, &mopDisplay);
if (mopDisplay != 8 && (OutputVar & VAR_MOP) == VAR_MOP) {
nRet = WriteAxisMop(0, 8);
}
}
}
使用需求
RT | Win32 | |
---|---|---|
最低支援版本 | 4.0 | 4.0 |
標頭檔 | ksapi.h | ksapi.h |
程式庫 | KsApi_Rtss.lib | KsApi.lib |
參見